package py.com.sole.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import py.com.sole.dao.impl.AlumnoImpl;
import py.com.sole.dao.impl.ArticuloImpl;
import py.com.sole.dao.impl.CiudadImpl;
import py.com.sole.dao.impl.ClaseImpl;
import py.com.sole.dao.impl.DireccionImpl;
import py.com.sole.dao.impl.EstadoImpl;
import py.com.sole.dao.impl.InstitucionImpl;
import py.com.sole.dao.impl.MateriaImpl;
import py.com.sole.dao.impl.PadreImpl;
import py.com.sole.dao.impl.PersonaDaoImpl;
import py.com.sole.dao.impl.ProfesorImpl;
import py.com.sole.dao.impl.ProveedorImpl;
import py.com.sole.dao.impl.RolImpl;
import py.com.sole.dao.impl.TipoArticulosImpl;
import py.com.sole.dao.impl.TipoDocumentoImp;
import py.com.sole.dao.impl.TutoriaImpl;
import py.com.sole.dao.impl.UsuarioImp;

public class DaoFactory {

  private static EntityManager em;

  public static UsuarioDao getUsuario() {
    return new UsuarioImp();
  }

  public static AlumnoDao getAlumno() {
    return new AlumnoImpl();
  }

  public static PersonaDao getPersona() {
    return new PersonaDaoImpl();
  }

  public static CiudadDao getCiudad() {
    return new CiudadImpl();
  }

  public static MateriaDao getMateria() {
    return new MateriaImpl();
  }

  public static TutoriaDao getTutoria() {
    return new TutoriaImpl();
  }

  public static RolDao getRol() {
    return new RolImpl();
  }

  public static TipoDocumentoDao getTipoDocumento() {
    return new TipoDocumentoImp();
  }

  public static TipoArticuloDao getTipoArticulo() {
    return new TipoArticulosImpl();
  }

  public static EntityManager getEmDao() {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("solesys");
    return emf.createEntityManager();
  }

  public static InstitucionDao getInstitucion() {
    return new InstitucionImpl();
  }

  public static DireccionDao getDireccion() {
    return new DireccionImpl();
  }

  public static PadreDao getPadre() {
    return new PadreImpl();
  }

  public static ClaseDao getClase() {
    return new ClaseImpl();
  }

  public static EstadoDao getEstado() {
    return new EstadoImpl();
  }

  public static ProveedorDao getProveedor() {
    return new ProveedorImpl();
  }

  public static ArticuloDao getArticulo() {
    return new ArticuloImpl();
  }

  public static EntityManager getEm() {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("solesys");
    if (null == em) {
      em = emf.createEntityManager();
    }
    return em;
  }

  public static ProfesorDao getProfesor() {
    return new ProfesorImpl();
  }

}
